home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-07-28 | 4.3 KB | 192 lines | [TEXT/MPS ] |
- /*
- File: DiskLogTests.cp
-
- Copyright: © 1991-1994 by Apple Computer, Inc.
- All rights reserved.
-
- Part of the AOCE Sample SMSAM Package. Consult the license
- which came with this software for your specific legal rights.
-
- */
-
-
-
- #ifndef debug
- #define debug // we are always in debug mode when running tests
- #endif
-
- #ifndef __DISKLOG__
- #include "DiskLog.h"
- #endif
-
- #ifndef __DEBUGASSERT__
- #include "DebugAssert.h"
- #endif
-
- #ifndef __TUPLETESTS__
- #include "TupleTests.h"
- #endif
-
- #ifndef __STDLIB__
- #include "StdLib.h"
- #endif
-
- #ifndef __TIME_H
- #include "Time.h"
- #endif
-
- #ifndef __DEBUGGINGGEAR__
- #include "DebuggingGear.h"
- #endif
-
- #ifndef __DEBUGCONSTANTS__
- #include "DebugConstants.h"
- #endif
-
- #ifndef __FILESPEC__
- #include "FileSpec.h"
- #endif
-
- #ifndef __THREAD_H
- // #include "Thread.h"
- #endif
-
- #pragma segment DiskLogTests
-
- /***********************************|****************************************/
-
- Boolean
- EnumerateTest ( TDiskLog& log )
- {
- TDiskLogEnumerator enumerator ( log );
-
- unsigned long count = log.CountEntries ();
- ASSERT_RETURN_ZERO ( count == enumerator.CountEntries () );
-
- for ( unsigned long i = 1; i <= count; i++ )
- {
- TYield ();
- unsigned long index = ( (unsigned long) rand () % count ) + 1;
- const TLogEntry* entry = enumerator.GetEntryByIndex ( index );
-
- if ( entry == nil )
- {
- chris << "### Error: entry #" << i << " was not gotten!" << flush;
- ASSERT_RETURN_ZERO ( entry != nil );
- }
- else if ( chrisFlag.Flag ( kExtensiveTupleDBDescribe ) )
- {
- chris << "#" << i << ": " << *entry << endl;
- }
- }
-
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean
- IterateTest ( TDiskLog& log )
- {
- TDiskLogIterator iterator ( log );
- unsigned long expectedCount = log.CountEntries (), actualCount;
- const TLogEntry* entry;
-
- actualCount = 0;
- for ( entry = iterator.GetFirstEntry ();
- entry != nil;
- entry = iterator.GetNextEntry () )
- {
- TYield ();
- ASSERT_RETURN_ZERO ( entry != nil );
- actualCount++;
-
- if ( chrisFlag.Flag ( kExtensiveTupleDBDescribe ) )
- chris << *entry << endl;
- }
-
- ASSERT_RETURN_ZERO ( expectedCount == actualCount );
-
- actualCount = 0;
- for ( entry = iterator.GetLastEntry ();
- entry != nil;
- entry = iterator.GetPreviousEntry () )
- {
- ASSERT_RETURN_ZERO ( entry != nil );
- actualCount++;
-
- if ( chrisFlag.Flag ( kExtensiveTupleDBDescribe ) )
- chris << *entry << endl;
- }
-
- ASSERT_RETURN_ZERO ( expectedCount == actualCount );
-
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean
- EnumIterateTests ( TDiskLog& log )
- {
- ASSERT_RETURN_ZERO ( EnumerateTest ( log ) );
- ASSERT_RETURN_ZERO ( IterateTest ( log ) );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean
- InsertTest ( TDiskLog& log, TLogEntry& entry )
- {
- unsigned long count = log.CountEntries ();
- // ASSERT_RETURN_ZERO ( log.GetError () == noErr );
- ASSERT_RETURN_ZERO ( log.AddEntry ( entry ) );
- // ASSERT_RETURN_ZERO ( log.GetError () == noErr );
- ASSERT_RETURN_ZERO ( EnumIterateTests ( log ) );
- ASSERT_RETURN_ZERO ( count == log.CountEntries () - 1 );
- // ASSERT_RETURN_ZERO ( log.GetError () == noErr );
- ASSERT_RETURN_ZERO ( log.Close () );
- // ASSERT_RETURN_ZERO ( log.GetError () == noErr );
- ASSERT_RETURN_ZERO ( log.Open () );
- // ASSERT_RETURN_ZERO ( log.GetError () == noErr );
- ASSERT_RETURN_ZERO ( EnumIterateTests ( log ) );
- TLogEntry* newEntry = log.CreateEntry ( count + 1 );
- ASSERT_RETURN_ZERO ( EnumIterateTests ( log ) );
- ASSERT_RETURN_ZERO ( newEntry != nil );
- // ASSERT_RETURN_ZERO ( log.GetError () == noErr );
- ASSERT_RETURN_ZERO ( entry == *newEntry );
- ASSERT_RETURN_ZERO ( *newEntry == entry );
- delete newEntry;
- return true;
- }
-
- /***********************************|****************************************/
-
- void DiskLogTests ()
- {
- TEST_REPORT(DiskLogTests);
-
- srand ( (unsigned int) clock () );
-
- TDiskLog log ( TFileSpec ( "disklog.test" ) );
- ASSERT_RETURN ( log.Open ( TDiskLog::kRewrite ) );
-
- unsigned long count = 10;
-
- while ( count-- > 0 )
- {
- TTestEntry entry; // create a random entry each time through the loop
-
- if ( !InsertTest ( log, entry ) )
- {
- chris << log << '\n';
- return;
- }
- }
-
- ASSERT_RETURN ( log.Close () );
- }
-
- /***********************************|****************************************/
-